/**
 * Copyright 2018 Google Inc. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *     http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { fetchFollowing } from '../../api';
import createPlainComponent from '../../utils/createPlainComponent';
import renderUserList from '../UserList';

const renderWarning = target => {
  const render = createPlainComponent(
    `<p>Showing at most the first 30 following</p>`,
  );
  render(target);
};

const render = (target, { username }) => {
  const renderLoadingPlaceholder = createPlainComponent(
    '<div class="user-data__content">Loading...</div>',
  );
  const element = renderLoadingPlaceholder(target);

  fetchFollowing(username).then(response => {
    const userFound = response.status === 200;
    const renderRealInfo = target => {
      renderWarning(target);
      renderUserList(target, { users: response.data.map(user => user.login) });
    };

    const renderInfo = userFound
      ? renderRealInfo
      : createPlainComponent('No such user!');

    element.querySelector('.user-data__content').innerHTML = '';
    renderInfo(element.querySelector('.user-data__content'));
  });
};

export default render;
